package com.demo.controller;

import com.demo.interceptor.BlogInterceptor;
import com.demo.model.Blog;
import com.demo.validator.BlogValidator;
import com.jfinal.aop.Before;

/**
 * 本 demo 仅表达最为粗浅的 jfinal 用法，更为有价值的实用的企业级用法
 * 详见 JFinal 俱乐部: http://jfinal.com/club
 * 
 * BlogController
 * 所有 sql 与业务逻辑写在 Model 或 Service 中，不要写在 Controller 中，养成好习惯，有利于大型项目的开发与维护
 */
@Before(BlogInterceptor.class)
public class BlogController extends BaseController {
	public void index() {
//		Cache cache = Redis.use();
//		Page<Blog> page = new Page<Blog>();
//		if (cache.get("blog") == null) {
//			System.out.println("no cache");
//			System.out.println(cache.get("blog"));
//			page = Blog.dao.paginate(getParaToInt(0, 1), 10);
//			cache.set("blog", page);
//		}else {
//			System.out.println("from cache");
//			page = cache.get("blog");
//		}
//		renderDataJson(ErrorInfo.ERR_SUCCESS, page);
		setAttr("blogPage", Blog.dao.paginate(getParaToInt(0, 1), 10));
		render("blog.html");
	}
	
	public void add() {
		Blog blog = getModel(Blog.class, "blog");
		blog.save();
//		Cache cache = Redis.use();
//		cache.del("blog");
	}
	
	@Before(BlogValidator.class)
	public void save() {
		getModel(Blog.class).save();
//		Cache cache = Redis.use();
//		cache.del("blog");
		redirect("/blog");
	}
	
	public void edit() {
		setAttr("blog", Blog.dao.findById(getParaToInt()));
	}
	
	@Before(BlogValidator.class)
	public void update() {
		getModel(Blog.class).update();
		redirect("/blog");
	}
	
	public void delete() {
		Blog.dao.deleteById(getParaToInt());
		redirect("/blog");
	}
}


